<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <!-- 前端路由的原理是通过不同的url，显示不同的页面或者组件 -->
    <div id="app">
      <h2>原生实现路由切换</h2>

      <!-- 1. 需要有几个按钮，用于改变url -->
      <!-- 加上#的路由叫做hash路由 -->
      <p>
        <a href="#hot">热映</a> | <a href="#cinema">影院</a> |
        <a href="#wait">待映</a>
      </p>

      <!-- 2. 需要有一个存放内容切换的容器 -->
      <div id="box"></div>
    </div>

    <script>
      // 3. 需要有一个路由表
      // 实际上就是一个数组，数组的每一项是一个拥有path和template的对象
      const routes = [
        {
          path: "hot",
          template: "<div>这是热映页面</div>",
        },
        {
          path: "cinema",
          template: "<div>这是影院页面</div>",
        },
        {
          path: "wait",
          template: "<div>这是待映页面</div>",
        },
      ];

      // 4. 监听url的改变。hashchange事件
      window.addEventListener("hashchange", () => {
        // console.log("hashchange");
        const { hash } = location;
        const hashstr = hash.slice(1); // 去掉前面的#
        routes.forEach((item) => {
          if (item.path === hashstr) {
            document.querySelector("#box").innerHTML = item.template;
          }
        });
      });
    </script>
  </body>
</html>
